/*
*
==============================================================================
*  Name        : 
*  Part of     : Omen Game Engine
*  Description : 
*  Version     : 1.0
*
*  Copyright (c) 2013 Lauri Kortevaara.
* 
==============================================================================
*/

#pragma once

#include "OmenConfig.h"
#include "OmenMath.h"

namespace Omen
{
    class OMEN_API Plane
    {
        public:
            Plane( Omen::Float a = 0.0f, Omen::Float b = 0.0f, Omen::Float c = 0.0f, Omen::Float d = 0.0f);
            Plane( Omen::Vector3d normal, Omen::Vector3d p0 );

            void normalize();   /// <summary>normalizes the plane so that |a,b,c| == 1</summary>
            Omen::Vector3d normal() const { return Omen::Vector3d(a,b,c); }

            Omen::Float dotProduct( const Omen::Vector3d& point ); /// <summary>Returns dot product of plane and point in 3d space</summary>

        public:
            Omen::Float a,b,c,d;

        protected:
        private:
            
    };
}

/// EOF